home *** CD-ROM | disk | FTP | other *** search
/ Freaks Macintosh Archive / Freaks Macintosh Archive.bin / Freaks Macintosh Archives / Ham⁄GPS / IP Folder / HAMradio TCP⁄IP / Docs / is_es Command Documentation < prev    next >
Text File  |  1993-01-03  |  4KB  |  78 lines

  1. Intermediate system to End-system (IS-ES): Functional Description
  2.  
  3. Let's assume that we have a dynamically routed network together and  two
  4. stations are trying to communicate across a chain of inter-connected IS.
  5. Ignore for a moment how the first ES finds an IS to forward  packets  to
  6. the  destination; lets consider how the last IS in the route sets up the
  7. final hop to the destination ES  and  enables  the  route  back  to  the
  8. source.
  9.  
  10. For  ease  of  description, consider the simple case of two ES trying to
  11. communicate through a single IS (extending to multiple IS works just the
  12. same way, :-) derivation is left to the reader.
  13.  
  14. Three nodes A,B,and C.  A uses B as a gateway to C.
  15.  
  16. In the pre-routing case, the following message exchange would occur if A
  17. attempted to communicate with C.
  18.  
  19.              A                        B                       C
  20.  
  21.              ARP request, target B->
  22.                   <- ARP reply from B-A
  23.              IP [A]=>[C] via B->
  24.                                       ARP request, target C->
  25.                                           <- ARP reply from C-B
  26.                                       IP [A]=>[C] ->
  27.                                        <- ARP request, target A
  28.  
  29.  
  30. IF no path exists between A and C this is the end of the world unless  C
  31. had manually added a route saying that traffic from C to A goes via B.
  32.  
  33. The first phase of routing answers this problem:-
  34.  
  35. When  B  gets an IP packet to forward, it notes if it is being used as a
  36. router (IS) and determines whether the next hop is the last hop  in  the
  37. route.   This  is  done  in iproute() after route resolution by checking
  38. ip.dest against gateway.  If the two are the same, this is the last hop.
  39. We're a gateway if ip.src is not our own IP address.
  40.  
  41. If  these conditions are met, ip_route() calls a routine to enable IS-ES
  42. routing from the source IP address to the destination.
  43.  
  44. The packet is forwarded normally but when C issues  an  ARP  request  to
  45. resolve where  A  is,  B  will  respond  on  behalf  on  A.  This can be
  46. considered a limited form of proxy ARP.  B will only respond to  an  ARP
  47. request, target A, from C and only C.
  48.  
  49. C  will  now  pass  IP packets to B which will get forwarded to A in the
  50. normal way.  We now have a route from A to C and have established a  way
  51. for C to get back to A.
  52.  
  53. B  has  a  table of which IP addresses it should respond to ARP requests
  54. and to whom it should respond.  Table entries are  aged  and  ultimately
  55. dropped on a time period similar to normal ARP entries.
  56.  
  57.  
  58. This capability is implemented via the is_es command.  This function was
  59. first developed by Stu Phillips, N6TTO for NOS and was ported  with  his
  60. permission to  NET/Mac.    I've  implemented  the above and here are the
  61. results of initial testing:-
  62.  
  63. 1. It works just fine subject to *one* problem.  Once A and C are in
  64.    communication and the channel gets congested, TCP connections running
  65.    over the route begin to back-off as normal.    If  the  channel  gets
  66. really congested,   it  is possible that the back-off period gets longer
  67. than the life of the IS-ES routing table entry at B and longer than  ARP
  68. table entry for  A  at C.  So when the TCP retry timer completes, C will
  69. ARP for A but B will no longer respond.  The connection is now hung just
  70. as  if  A and C were in direct communication and A simply went away (eg:
  71. power'd off).  The  solution  to  this is full routing; in the  meantime
  72. the  function  still  serves  a useful purpose in enabling communication
  73. between nodes.
  74.  
  75. 2. Round-trip times are clearly going to be longer than for direct  node
  76. to node connections.   This  exacerbates    the   TCP  back-off  problem
  77. described above.
  78.